package com.xxx.result;

import com.xxx.constant.GlobleExceptioniContants;
import lombok.Data;

//返回JSON结果
@Data
public class JSONResult {

    private boolean success = true;

    private String message = "成功";

    //错误码，用来描述错误类型 ，20000 表示么有错误
    private String code = "20000";

    //返回的数据
    private Object data;





    //success(): 创建一个默认的成功结果实例
    public static JSONResult success(){
        return new JSONResult();
    }

    //success(Object obj): 创建一个包含指定数据的成功结果实例
    public static JSONResult success(Object obj){
        JSONResult instance = new JSONResult();
        instance.setData(obj);
        return instance;
    }

    //success(Object obj, String code): 创建一个包含数据和指定code的成功结果实例
    public static JSONResult success(Object obj,String code){
        JSONResult instance = new JSONResult();
        instance.setCode(code);
        instance.setData(obj);
        return instance;
    }



    //error(): 创建一个默认的失败结果实例(仅设置success=false)
    public static JSONResult error(){
        JSONResult jsonResult = new JSONResult();
        jsonResult.setSuccess(false);
        return jsonResult;
    }

    //error(String message): 创建一个带有错误消息的失败结果实例
    public static JSONResult error(String message){
        return error(message,null);
    }

    //error(String message, String code): 创建一个带有错误消息和错误码的失败结果实例
    public static JSONResult error(String message,String code){
        JSONResult instance = new JSONResult();
        instance.setMessage(message);
        instance.setSuccess(false);
        instance.setCode(code);
        return instance;
    }
    //方法本质上是一个重载方法，它调用了已有的 error(String message, String code) 方法，
    // 只是将从枚举中获取的 message 和 code 作为参数传递进去，实现了代码复用。
    public static JSONResult error(GlobleExceptioniContants globleExceptioniContants){
        return error(globleExceptioniContants.getMessasge(),globleExceptioniContants.getCode());
    }


    //public static JSONResult error(CommonErrorCode errorCode){
    //    return error(errorCode.getMesssage(),errorCode.getCode());
    //}


}
